package com.ruoyi.business.domain.koc;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;


/**
 * koc等级表
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("tb_koc_level")
@ApiModel("koc等级表")
public class TbKocLevel extends BaseEntity {

    /**
     * 主键id
     */
    @ApiModelProperty(value = "主键id")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 名称
     */
    @ApiModelProperty(value = "koc等级名称")
    @TableField("name")
    @NotBlank(message = "koc等级名称不许为空")
    @Size(min = 0, max = 100, message = "参数名称不能超过100个字符")
    private String name;

    /**
     * code
     */
    @ApiModelProperty(value = "koc等级code标识")
    @TableField("code")
    @NotBlank(message = "koc 等级code 不许为空")
    @Size(min = 0, max = 100, message = "koc code不能超过100个字符")
    private String code;


    /**
     * koc 等级
     */
    @ApiModelProperty(value = "koc等级")
    @TableField("level")
    @NotNull(message = "等级参数不许为空")
    @Range(min = 1, max = 4, message = "参数范围在1-4之间")
    private Integer level;


    /**
     * koc 等级必做任务类型
     */
    @ApiModelProperty(value = "koc等级必做任务类型 多个用',' 隔开")
    @TableField("must_koc_task_type")
    private String mustKocTaskType;


    /**
     * koc 等级必做任务类型集合
     */
    @ApiModelProperty(value = "必做任务类型集合")
    @TableField(exist = false)
    private List<TbKocTaskType> mustKocTaskTypes;


    /**
     * koc 等级非必做任务类型
     */
    @ApiModelProperty(value = "koc 等级非必做任务类型 多个用',' 隔开")
    @TableField("request_koc_task_type")
    private String requestKocTaskType;


    /**
     * koc 等级非必做任务类型集合
     */
    @ApiModelProperty(value = "必做任务类型集合")
    @TableField(exist = false)
    private List<TbKocTaskType> requestKocTaskTypes;


    /**
     * koc 等级提升必做任务类型
     */
    @ApiModelProperty(value = "koc 等级提升必做任务类型 多个用',' 隔开")
    @TableField("up_request_koc_task_type")
    private String upRequestKocTaskType;


    /**
     * koc 等级提升必做任务类型
     */
    @ApiModelProperty(value = "等级提升必做任务类型")
    @TableField(exist = false)
    private List<TbKocTaskType> upRequestKocTaskTypes;

    /**
     * koc 等级提升必做任务类型持续n 月
     */
    @ApiModelProperty(value = "koc 等级提升必做任务类型 持续n月升级")
    @TableField("up_request_koc_task_type_hold")
    private Integer upRequestKocTaskTypeHold;


    /**
     * koc 降级条件某任务类型未作
     */
    @ApiModelProperty(value = "koc 降级条件某任务类型未作")
    @TableField("down_koc_task_type")
    private String downKocTaskType;

    /**
     * koc 等级提升必做任务类型
     */
    @ApiModelProperty(value = "未作降级任务类型")
    @TableField(exist = false)
    private List<TbKocTaskType> downKocTaskTypeTypes;


    /**
     * koc 降级 某任务未做 持续 n 月 降级
     */
    @ApiModelProperty(value = "koc 等级降级 持续n月未作某任务进行降级")
    @TableField("down_koc_task_type_hold")
    private Integer downKocTaskTypeHold;

    /**
     * 等级权益
     */
    @ApiModelProperty(value = "等级权益")
    @TableField("rights")
    private String rights;


    /**
     * koc 降级 某任务未做 持续 n 月 降级
     */
    @ApiModelProperty(value = "备注")
    @TableField("remarks")
    private String remarks;


}
